package com.kinghunt.misp.service.api.userx;

import com.kinghunt.misp.common.dto.common.Tree;
import com.kinghunt.misp.common.dto.userx.PermissionDTO;
import com.bygoodtech.kings.common.dto.ApiResult;

import java.util.List;

/**
 * @author jiangtao
 * @date 2019-10-24 00:40.
 */
public interface PermissionReadService {

    /**
     * 获取系统所有权限信息
     *
     * @param appCode 应用code
     * @return 系统权限信息
     */
    ApiResult<Tree<PermissionDTO>> getSystemPermissionTree(String appCode);

    /**
     * 根据角色ID获取角色权限信息，包含授权和未授权
     *
     * @param roleId 角色ID
     * @return 角色权限集合
     */
    ApiResult<Tree<PermissionDTO>> getRolePermissionTree(Long roleId);

    /**
     * 根据用户ID获取用户权限信息，包含授权和未授权
     *
     * @param userId 用户ID
     * @return 用户权限集合
     */
    ApiResult<Tree<PermissionDTO>> getUserPermissionTree(Long userId);


    /**
     * 根据角色ID获取角色权限信息，仅授权
     *
     * @param roleId 角色ID
     * @return 角色权限集合
     */
    ApiResult<List<PermissionDTO>> getRolePermissions(Long roleId);

    /**
     * 根据角色ID批量获取角色权限信息，仅授权
     *
     * @param roleIds 角色ID
     * @return 权限集合
     */
    ApiResult<List<PermissionDTO>> getRolePermissions(List<Long> roleIds);

    /**
     * 根据用户ID获取用户权限信息，仅授权
     *
     * @param userId 用户ID
     * @return 用户权限集合
     */
    ApiResult<List<PermissionDTO>> getUserPermissions(Long userId);
}
